In digital systems, a color image can be represented as a set of pixels. Each pixel may be associated with color values which describe a pixel color for that position in the image. For example, the color values may describe the pixel color in terms of hue, saturation and lightness. The color values can also correspond to color coordinates in a given color space. If the color spaces used for the specification of a color are related to the native color space of a device, they are referred to as device-dependent color spaces (e.g. CMYK values of a specific printer) versus device-independent color spaces, which enable a color specification which is independent of a specific device.
Transforming color image data from one device and displaying, manipulating or printing the image on another device which may have a different colorimetric characteristic is often desirable. For example, RGB data from an input scanner can be converted to a device independent space such as CIELAB. This device independent data may then be received by an output device which may in turn convert the data to a device dependent color space for display, printing, etc. This transformation process can allow images to have the same color appearance across different devices and/or outputs.
Transforming color values from one color space to another color space can be accomplished by relating coordinates in one color space to coordinates in a different color space. Color look-up tables (CLUTs) can be an efficient way to describe transformations between color spaces. However, systems may have either memory or processing or transmission limitations restricting the use of large CLUTS. As a result, CLUTs can be re-sampled with fewer points and interpolation algorithms may be used to approximate colors not explicitly found in the CLUT.
Uniform CLUTs, or CLUTS having color points uniformly distributed or spaced from one another, are often used to approximate non-linear color transformations. A number of entries in the CLUT can be increased to increase accuracy, but this can be inefficient because the number of sample points in both over- and under-sampled parts of the function may be increased. Uniform CLUTs have additional disadvantages in that uniform CLUTs are calculated in some way from original measurement data and additional resources may be needed to ensure a decent accuracy for colors inside, but close to the border of a device color gamut.